# 作者: 赵若云
# 2025年02月18日10时33分08秒
# 3478783573@qq.com

# 每次运行地址会变 解释器管理内存 每个新进程的起始地址不相同
# 可变类型 变量区指向的数据区可变
# 不可变类型 只读数据区

def change(num):
    print(f'num={num},id(num)={id(num)}')  # 同一个值的变量挂在同一个数下
    num = 5
    print(f'change函数修改后num={num},id(num)={id(num)}')


# 不可变类型 eg.整型 无法改变函数外某个整型变量的值
a = 10
print(f'id(a)={id(a)}')
change(a)  # 函数调用只穿值不传地址
print(f'函数外a={a},id(a)={id(a)}')


# 可变类型 my_list的数据区可变
my_list = [1, 2, 3]
print(f'my_list={my_list},my_list(id)={id(my_list)}')


# my_list[0] = 5
# print(f'my_list={my_list},my_list(id)={id(my_list)}')


def list_change(new_list):
    # new_list = [5, 2, 3]#一个新地址，创建了一个新列表对象（主要是Python没有int *p等东西，直接写就相当于创建）
    new_list[0] = 0  # 与传入的参数同一个地址；原数据引用，把数据空间中的数据改了
    print(f'my_list={new_list},my_list(id)={id(new_list)}')


list_change(my_list)
print(f'my_list={my_list},my_list(id)={id(my_list)}')
